![]() |
CopyDeepMask |
||||
Header: | Quickdraw.h | Carbon status: | Supported | |
Uses a mask when copying bitmaps or pixel maps between graphics ports (or from an offscreen graphics world into a graphics port).
void CopyDeepMask ( const BitMap *srcBits, const BitMap *maskBits, const BitMap *dstBits, const Rect *srcRect, const Rect *maskRect, const Rect *dstRect, SInt16 mode, maskRgn );
The source BitMap structure.
The masking BitMap structure.
The destination BitMap structure. The result is clipped to the mask region that you specify in the maskRgn parameter, and to the boundary rectangle that you specify in the dstRect parameter.
The source rectangle.
The mask rectangle. This must be the same size as the rectangle passed in the srcRect parameter. The rectangle you pass here selects the portion of the bitmap or pixel map that you specify in the maskBits parameter to use as the mask.
The destination rectangle.
The source mode.
The mask clipping region. If you do not want to clip to the mask region, specify NULL.
CopyDeepMask combines the effects of the CopyBits and CopyMask functions. You specify a mask to CopyDeepMask so that it transfers the source image to the destination image only where the bits of the mask are set to 1. Use CopyDeepMask to move offscreen graphic images into an onscreen window, to blend colors for the image in a pixel map, and to shrink and expand images.
When copying images between color graphics ports, you must coerce each port’s CGrafPort structure to a GrafPort structure, dereference the portBits fields of each, and then pass these “bitmaps” in the srcBits and dstBits parameters. If your application copies a pixel image from a color graphics port called MyColorPort, for example, you could specify (*GrafPtr(MyColorPort)).portBits in the srcBits parameter. The transfer can be performed in any of the transfer modes—with or without adding the ditherCopy constant—that are available to CopyBits.
Using the srcRect and dstRect parameters, you can specify identically or differently sized source and destination rectangles; for differently sized rectangles, CopyDeepMask scales the source image to fit the destination. When you specify rectangles in the srcRect and dstRect parameters, use the local coordinate systems of, respectively, the source and destination graphics ports.
If you specify pixel maps to CopyDeepMask, they may range from 1 to 32 pixels in depth. The pixel depth of the mask that you specify in the maskBits parameter is applied as a filter between the source and destination pixel maps that you specify in the srcBits and dstBits parameters. A black mask pixel value means that the copy operation is to take the source pixel; a white value means that the copy operation is to take the destination pixel. Intermediate values specify a weighted average, which is calculated on a color component basis. For each pixel’s color component value, the calculation is
(1 – mask) x source + (mask) x destination
Thus high mask values for a pixel’s color component reduce that component’s contribution from the source PixMap structure.
As with the CopyMask function, calls to CopyDeepMask are not recorded in pictures and do not print.
See the list of special considerations for CopyBits; these considerations also apply to CopyDeepMask.
The CopyDeepMask function may move or purge memory blocks in the application heap; do not call this function at interrupt time.
This function is available to basic QuickDraw only in System 7.
Supported in Carbon. Available in Carbon 1.0.2 and later when running Mac OS 8.1 or later.
© 2000 Apple Computer, Inc. (Last Updated 6/30/2000)